function [f  d] = SeleccionCaracteristicas4()
tic 
[fi, tex] = fopen('seleccion_error.txt', 'a');
addpath(genpath(pwd));
%for i=1:20
    Selecciona(fi);
    disp('PASAMOS')
%end

fprintf(fi, 'TIEMPO: DEMORO = %f segundos \n',toc);
st = fclose(fi);
end
function [f  d] = Selecciona(fi)
%Se prepara los archivos de LOGs



Caliz = 1;
Palito = 2;

load caracteristicas.mat;
multi = 3;
mkdir caliz_multi_final
cd caliz_multi_final
try
    [fs  ds] = getCaracteristicasMalas(f, d, Caliz);
    evaluacionCaracteristicas(fs, ds, fi, multi);
catch me1
    fprintf(fi, 'ERROR CALIZ  MULTI %s \n', me1.message );
end
cd ..
mkdir palito_multi_final
cd palito_multi_final
 try
    [fs  ds] = getCaracteristicas(f, d, Palito);
    evaluacionCaracteristicas(fs, ds, fi, multi);
catch me1
    fprintf(fi, 'ERROR PALITO MULTI   %s \n', me1.message );
end
cd ..


end
function [f  d] = evaluacionCaracteristicas(fs, ds, fi,multi)

cantidadCaracteristicas = [8 10]; 

fsn= norm_sfs(fs,ds);
[Xe De Xt Dt indice_entrenamiento indice_prueba] =  getMatrizTrainigMatrizTest(fsn,ds(:,multi));
save matrizTrainingTest Xe De Xt Dt indice_entrenamiento indice_prueba cantidadCaracteristicas;

est2T=zeros(size(cantidadCaracteristicas, 2),   size(Xt,1) ,max(cantidadCaracteristicas));
est2E=zeros(size(cantidadCaracteristicas, 2),   size(Xe,1),max(cantidadCaracteristicas));

est3T=zeros(size(cantidadCaracteristicas, 2),   size(Xt,1) ,max(cantidadCaracteristicas));
est3E=zeros(size(cantidadCaracteristicas, 2),   size(Xe,1),max(cantidadCaracteristicas));

est4T=zeros(size(cantidadCaracteristicas, 2),   size(Xt,1) ,max(cantidadCaracteristicas));
est4E=zeros(size(cantidadCaracteristicas, 2),   size(Xe,1),max(cantidadCaracteristicas));


for i=1:length(cantidadCaracteristicas)
   final =cantidadCaracteristicas(i);
        try
           
            %[X_estr2, X_estr2_test] = getSFSPCABB(fs,fsn,Xe, De, Xt,indice_entrenamiento,indice_prueba, cantidadCaracteristicas(i),fi);            
            est2T(i,:, 1:final) = X_estr2_test;
            est2E(i,:, 1:final) = X_estr2;
            save est2   est2T est2E;
        catch me2
           fprintf(fi, 'ERROR estrategia 2 %d %s \n',cantidadCaracteristicas(i), me2.message );
        end
        try
            %[X_estr3, X_estr3_test] = getSFSBB(fsn,Xe, De, Xt, cantidadCaracteristicas(i),fi);            
            est3T(i,:, 1:final) = X_estr3_test;
            est3E(i,:, 1:final) = X_estr3;
            save est3   est3T est3E;
        catch me3
           fprintf(fi, 'ERROR estrategia 3 %d %s \n',cantidadCaracteristicas(i), me3.message );
        end
        try
            [X_estr, X_estr_test] = getSFSPCA(fsn,Xe, De, Xt,indice_entrenamiento,indice_prueba, cantidadCaracteristicas(i),fi);                 
            est4T(i,:, 1:final) = X_estr_test;
            est4E(i,:, 1:final) = X_estr;
            save est4   est4T est4E;
        catch me3
           fprintf(fi, 'ERROR estrategia 3 %d %s \n',cantidadCaracteristicas(i), me3.message );
        end
end
end
function [X D] = getCaracteristicas(f, d, caliz)
indices =  find(d(:,1)==caliz);
D = d(indices,:);
X = f(indices,:);
end
 %
function [X D] = getCaracteristicasMalas(f, d, caliz)
[X D] = getCaracteristicas(f, d, caliz);

indices =  find(D(:,3)~=2);
D = D(indices,:);
D (find(D(:,3) == 3),3) =2;
X = X(indices,:);
end

